package Chat.Donnees;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;

/**
 * Classe permettant de gérer une liste de Contact
 * 
 * @author Ndanja & Papa Abdou
 *
 */
public class ListContacts {

    private Contact mContact;
    private Vector mVector;
    private HashMap liste;

    public ListContacts() {

        mVector = new Vector();
        liste = new HashMap();
    }

    /**
     * Permet d'insérer un Contact dans la liste
     * @param nname: nom du Contact. Clé permettant de retrouver un contact dans la liste
     * @param contact: Contact de l'utilisateur
     */
    public void addContact(String nname, Contact contact) {

        liste.put(nname, contact);

    }

    /**
     * Permet de supprimer un Contact de la liste à partir de son "nickname"
     * @param nname: Nickname de l'utilisateur
     */
    public void removeContact(String nname) {

        liste.remove(nname);

    }

    /**
     * Supprimer tous les Contact de la liste
     */
    public void removeAllContacts() {
        this.mVector.clear();
    }

    /**
     * Retourne un Contact de la liste à partir de son Nickname
     * @param nname
     * @return: Contact
     */
    public Contact getContact(String nname) {

        int i;
        mContact = null;
        if (liste.containsKey(nname)) {
            mContact = (Contact) liste.get(nname);
        }

        return mContact;
    }

    /**
     * Retourne un Contact de la liste à partir de son adresse
     * @param address
     * @return
     */
    public Contact getContactByAddress(String address) {

        Contact contact;

        for (Iterator iterator = liste.keySet().iterator(); iterator.hasNext();) {
            String cle = (String) iterator.next();
            contact = (Contact) liste.get(cle);

            if (contact.getAddress().equals(address)) {
                mContact = contact;
            }
        }

        return mContact;
    }

    /**
     * Permet de récupérer tous les Contacts enregistrés dans un objet de type Vector
     * @return: Vector <Contact>
     */
    public Vector getCollection() {

        for (Iterator iterator = liste.keySet().iterator(); iterator.hasNext();) {

            String cle = (String) iterator.next();
            Contact contact = (Contact) liste.get(cle);
            this.mVector.add(contact);

        }
        return this.mVector;
    }

    /**
     *Permet de récupérer les "Nickname" de tous les Contacts enregistrés dans un objet de type Vector
     * @return: Vector <String>
     */
    public Vector getNicknameList() {
        //mVector = null;
        for (Iterator iterator = liste.keySet().iterator(); iterator.hasNext();) {
            mVector.add((String) iterator.next());
        }
        return mVector;
    }

    /**
     * Retourne le nombre total de Contact enregistré dans la liste
     * @return
     */
    public int getNicknameListNumberOfElements() {
        return liste.size();

    }
}

